"""
author：fc
date：  2021/10/4
"""
#
# 使用PCA：主成分分析对数据属性（进行规约）降维
# 使用库：sklearn
# 结果 还是觉得模棱两可

from sklearn.decomposition import PCA
import pandas as pd
import numpy as np

# 先导入数据
raw_data=pd.read_csv("../files/poi/CHA.csv")
data=pd.DataFrame()
data['User_id']=raw_data['User_id'].copy()
data['Location_id']=raw_data['Location_id'].copy()
data['POI_id']=raw_data['POI_id'].copy()
data['Latitude']=raw_data['Latitude'].copy()
data['Longitude']=raw_data['Longitude'].copy()
data['stars']=raw_data['stars'].copy()
print(f"数据形状{data.shape}")
print(data.describe())

# 引入PCA
pca1=PCA()
# 填入数据
pca1.fit(data) #
characteristic=pca1.components_ # 得到特征量,不知其含义
print(f"特征量:\n{characteristic}")
domi_ratio=pca1.explained_variance_ratio_ # 得到贡献率百分比
print(f"贡献率百分比:\n{domi_ratio}")

# 降维
pca2=PCA(3) # 将原数据降为2维
pca2.fit(data)
result=pca2.transform(data)  #降维
print(f"降维结果:\n{result}")
characteristic2=pca2.components_
print(f"降维后:\n{characteristic}")

#维度恢复
raw_data_recover=pca2.inverse_transform(result) # 恢复
print(f"维度恢复\n{raw_data_recover}")